package com.ivor.tools

import android.content.Context

data class BoringContent(
    val title: String,
    val content: String,
    val type: String // "course", "novel", "manual", "report"
)

object BoringContentData {
    private val defaultContents = listOf(
        BoringContent(
            "会计学基础",
            "会计是以货币为主要计量单位，以凭证为主要依据，借助于专门的技术方法，对一定单位的资金运动进行全面、综合、连续、系统的核算与监督，向有关方面提供会计信息、参与经营管理、旨在提高经济效益的一种经济管理活动。会计的基本职能包括核算职能和监督职能。核算职能是指会计以货币为主要计量单位，通过确认、计量、记录、报告等环节，对特定主体的经济活动进行记账、算账、报账，为各有关方面提供会计信息的功能。监督职能是指会计人员在进行会计核算的同时，对特定主体经济活动的真实性、合法性和合理性进行审查。",
            "course"
        ),
        BoringContent(
            "统计学概论",
            "统计学是关于认识客观现象总体数量特征和数量关系的科学。它是通过搜集、整理、分析统计资料，认识客观现象数量规律性的方法论科学。统计学的研究对象是客观现象总体的数量方面。统计学研究现象总体数量方面包括三个要点：第一，统计学研究对象是客观现象的总体，不是个别现象。第二，统计学研究现象总体的数量方面，不是质的方面。第三，统计学研究现象总体数量方面的规律性，不是偶然性。",
            "course"
        ),
        BoringContent(
            "经济学原理",
            "经济学是研究人类经济活动的规律即价值的创造、转化、实现的规律——经济发展规律的理论，分为政治经济学与科学经济学两大类型。政治经济学根据所代表的阶级的利益为了突出某个阶级在经济活动中的地位和作用自觉从某个侧面研究价值规律或经济规律，科学经济学自觉从整体上研究人类经济活动的价值规律或经济规律。经济学核心思想是物质稀缺性和有效利用资源，可分为两大主要分支，微观经济学和宏观经济学。",
            "course"
        ),
        BoringContent(
            "管理学基础",
            "管理学是一门综合性的交叉学科，是系统研究管理活动的基本规律和一般方法的科学。管理学是适应现代社会化大生产的需要产生的，它的目的是：研究在现有的条件下，如何通过合理的组织和配置人、财、物等因素，提高生产力的水平。管理学是一门综合性的交叉学科。管理活动的广泛性和复杂性，决定了管理学必须用多学科的知识和方法来研究管理活动和管理规律。",
            "course"
        ),
        BoringContent(
            "法学概论",
            "法学，又称法律学、法律科学，是以法律、法律现象以及其规律性为研究内容的科学，它是研究与法相关问题的专门学问，是关于法律问题的知识和理论体系。法学，是关于法律的科学。法律作为社会的强制性规范，其直接目的在于维持社会秩序，并通过秩序的构建与维护，实现社会公正。作为以法律为研究对象的法学，其核心就在对于秩序与公正的研究，是秩序与公正之学。",
            "course"
        ),
        BoringContent(
            "平凡的一天",
            "李明今天早上七点准时起床，洗漱完毕后吃了一碗白粥配咸菜。他穿上那件洗得发白的蓝色衬衫，背起帆布包，走向公交车站。公交车准时到达，车上人不多，他找了个靠窗的位置坐下。车窗外是熟悉的街景，梧桐叶子已经开始泛黄。到了公司，他打卡上班，开始了一天的工作。上午主要是整理文件，下午开了两个会议，讨论的都是些琐碎的事务。会议室里的空调声嗡嗡作响，有同事在打哈欠。五点半下班后，他去超市买了些日用品，然后回到租住的小公寓。晚饭是简单的蛋炒饭，看了会儿新闻，九点半就准备睡觉了。",
            "novel"
        ),
        BoringContent(
            "等车的人",
            "王芳站在公交站台上，看着手表显示的时间一分一秒地过去。她已经等了十五分钟，但是那班车还没有来。旁边有个老大爷也在等车，他不时地往马路上张望，然后又低头看看自己的手机。站台上贴着各种广告，有卖房子的，有招聘的，还有一些已经褪色的通知。远处传来汽车的声音，但都不是她要等的那班车。天空灰蒙蒙的，看起来要下雨了。她想起包里还有一把伞，这让她稍微安心了一些。又过了五分钟，终于看到了那班车的影子。",
            "novel"
        ),
        BoringContent(
            "办公室的下午",
            "下午两点，办公室里很安静。张华坐在自己的工位上，面前摆着一堆需要整理的文件。空调的声音很轻，偶尔能听到键盘敲击的声音。隔壁工位的同事在喝水，发出轻微的声响。窗外的阳光透过百叶窗洒在地板上，形成一道道光影。他拿起第一份文件，开始逐字逐句地阅读。这是一份关于设备采购的申请，内容很详细，包括设备型号、价格、供应商信息等。他需要核对每一个数据，确保没有错误。时间过得很慢，墙上的时钟滴答滴答地响着。",
            "novel"
        ),
        BoringContent(
            "超市购物",
            "刘女士推着购物车在超市里慢慢地走着。她手里拿着一张购物清单，上面写着今天需要买的东西：大米、食用油、洗衣粉、牙膏。超市里播放着轻柔的背景音乐，货架上的商品整齐地摆放着。她先去了粮油区，挑选了一袋五公斤装的大米。然后去日用品区，比较了几种不同品牌的洗衣粉的价格和成分。收银台前排着几个人，大家都很安静地等待着。她看了看手表，现在是下午四点半，还有时间去菜市场买些新鲜蔬菜。",
            "novel"
        ),
        BoringContent(
            "图书馆的午后",
            "图书馆里很安静，只能听到翻书页和轻微的脚步声。小李找了一个靠窗的位置坐下，桌上放着几本厚厚的专业书籍。阳光从窗户照进来，在桌面上形成一个明亮的光斑。他打开第一本书，开始认真地阅读。书的内容很枯燥，都是一些理论知识和数据分析。旁边有个学生在做笔记，笔尖在纸上发出沙沙的声音。远处有人轻咳了一声，然后又恢复了安静。时间过得很慢，他看了看手机，才过了半个小时。",
            "novel"
        ),
        BoringContent(
            "设备操作手册第三章",
            "3.1 设备启动前检查。在启动设备之前，操作人员必须按照以下步骤进行全面检查：首先检查电源连接是否牢固，电压是否在规定范围内（220V±10%）。其次检查各个开关是否处于正确位置，紧急停止按钮是否正常。然后检查润滑油位是否在标准刻度线之间，如油位过低需及时添加46号抗磨液压油。接着检查冷却水循环系统是否正常，水温应控制在15-25摄氏度之间。最后检查各传动部件是否有异常声响，紧固件是否松动。3.2 设备启动程序。确认所有检查项目无误后，按以下顺序启动设备。",
            "manual"
        ),
        BoringContent(
            "安全操作规程",
            "第一条 为了确保操作人员的人身安全和设备的正常运行，特制定本规程。第二条 操作人员必须经过专业培训，考核合格后方可上岗操作。第三条 操作前必须穿戴好劳动保护用品，包括安全帽、防护眼镜、防护手套等。第四条 严禁在设备运行过程中进行维修、调整等作业。第五条 发现设备异常时，应立即停机检查，不得带病运行。第六条 操作结束后，应按规定程序关闭设备，并做好清洁保养工作。第七条 违反本规程造成事故的，将依据相关规定追究责任。",
            "manual"
        ),
        BoringContent(
            "维护保养手册",
            "日常维护：每日开机前检查设备外观是否正常，各连接部位是否牢固。运行中注意观察设备运行状态，听声音是否正常。每日工作结束后，清洁设备表面，保持整洁。每周维护：检查润滑系统，必要时添加润滑油。检查电气连接是否松动，紧固松动的连接。清洁设备内部，清除积尘和杂物。每月维护：全面检查设备各部件磨损情况，及时更换磨损严重的部件。检查安全装置是否正常工作。对设备进行全面清洁和保养。季度维护：请专业技术人员对设备进行全面检查和调试。",
            "manual"
        ),
        BoringContent(
            "质量控制标准",
            "1. 原材料检验标准：所有原材料进厂前必须进行质量检验，检验项目包括外观质量、尺寸精度、化学成分等。检验合格的原材料方可入库使用，不合格品必须退回供应商。2. 生产过程控制：生产过程中应严格按照工艺要求进行操作，关键工序必须设置质量控制点。每道工序完成后应进行自检，发现问题及时纠正。3. 成品检验：成品必须经过全面检验，包括功能测试、外观检查、尺寸测量等。检验合格的产品方可包装出厂，不合格品必须返工或报废。",
            "manual"
        ),
        BoringContent(
            "环境管理制度",
            "第一章 总则。第一条 为加强环境保护工作，防止环境污染，保障员工身体健康，特制定本制度。第二条 本制度适用于公司所有部门和员工。第二章 环境保护责任。第三条 公司设立环境保护领导小组，负责环境保护工作的组织实施。第四条 各部门负责人是本部门环境保护工作的第一责任人。第五条 全体员工都有保护环境的义务和责任。第三章 污染防治措施。第六条 严格控制废水排放，确保达标排放。第七条 加强废气治理，减少大气污染。第八条 规范固体废物处置，实现减量化、资源化。",
            "manual"
        ),
        BoringContent(
            "年度工作总结报告",
            "本年度我部门在公司领导的正确指导下，认真贯彻落实各项工作要求，圆满完成了既定的工作目标。现将主要工作情况汇报如下：一、基础工作方面。全年共处理各类文件1247份，其中上级来文423份，内部文件824份。组织召开部门会议36次，参加跨部门协调会议28次。完成各类报表统计工作，数据准确率达到99.8%。二、业务工作方面。按照年初制定的工作计划，逐项推进各项业务工作。完成常规业务处理2156件，办结率100%。处理突发事件15起，均在规定时间内妥善解决。",
            "report"
        ),
        BoringContent(
            "财务分析报告",
            "根据本月财务数据，现对公司财务状况进行如下分析：一、收入情况。本月实现营业收入1,245,678元，较上月增长3.2%，较去年同期增长8.7%。其中主营业务收入1,156,789元，占总收入的92.9%。二、成本费用情况。本月发生营业成本876,543元，毛利率为29.6%。期间费用234,567元，其中销售费用123,456元，管理费用89,012元，财务费用22,099元。三、利润情况。本月实现净利润134,568元，净利率为10.8%。四、资产负债情况。月末总资产5,678,901元，总负债2,345,678元，资产负债率为41.3%。",
            "report"
        ),
        BoringContent(
            "市场调研报告",
            "为了解目标市场的基本情况，我们于本月开展了市场调研工作。调研采用问卷调查和实地走访相结合的方式，共收集有效问卷500份，走访企业20家。调研结果如下：一、市场规模。目标市场年销售额约为2.5亿元，近三年平均增长率为12%。二、竞争格局。市场上主要有5家竞争对手，其中A公司市场份额最大，占35%；B公司占28%；C公司占18%；其他公司合计占19%。三、客户需求。客户最关注的因素依次为：产品质量（45%）、价格（28%）、服务（18%）、品牌（9%）。",
            "report"
        ),
        BoringContent(
            "安全检查报告",
            "按照公司安全管理制度要求，安全检查小组于本月对各部门进行了安全检查。检查内容包括消防设施、用电安全、设备安全等方面。检查结果如下：一、消防安全。检查了灭火器配置情况，共有灭火器45个，其中3个需要更换。安全出口标识完好，疏散通道畅通。二、用电安全。电气设备运行正常，未发现私拉乱接现象。配电箱标识清楚，防护措施到位。三、设备安全。生产设备安全防护装置完好，操作规程张贴到位。发现2台设备需要进行维护保养。四、整改要求。对发现的问题，要求相关部门在一周内完成整改。",
            "report"
        ),
        BoringContent(
            "培训效果评估报告",
            "为评估本次培训的效果，我们采用了问卷调查、现场测试和跟踪观察等方法。参训人员共计80人，回收有效问卷78份。评估结果如下：一、满意度调查。对培训内容满意度为92%，对讲师授课满意度为89%，对培训组织满意度为95%。二、知识掌握情况。现场测试平均分为85.6分，其中90分以上占45%，80-89分占38%，70-79分占15%，70分以下占2%。三、技能提升情况。通过跟踪观察，78%的参训人员在实际工作中能够运用培训内容，工作效率平均提升15%。四、改进建议。建议增加实操练习时间，加强案例分析。",
            "report"
        )
    )
    
    /**
     * 根据类型获取随机内容（包含用户自定义内容）
     */
    fun getRandomContent(type: String, context: Context? = null): BoringContent {
        val contentsByType = getAllContentsByType(type, context)
        return if (contentsByType.isNotEmpty()) {
            contentsByType.random()
        } else {
            // 如果指定类型没有内容，返回默认内容
            defaultContents.random()
        }
    }
    
    /**
     * 根据类型获取所有内容（包含用户自定义内容）
     */
    fun getAllContentsByType(type: String, context: Context? = null): List<BoringContent> {
        val defaultContentsByType = defaultContents.filter { it.type == type }
        
        return if (context != null) {
            val userContents = UserContentManager.getUserContentsByType(context, type)
            defaultContentsByType + userContents
        } else {
            defaultContentsByType
        }
    }
    
    /**
     * 获取所有内容（包含用户自定义内容）
     */
    fun getAllContents(context: Context? = null): List<BoringContent> {
        return if (context != null) {
            defaultContents + UserContentManager.getAllUserContents(context)
        } else {
            defaultContents
        }
    }
    
    /**
     * 获取内容统计信息
     */
    fun getContentStats(context: Context? = null): Map<String, Int> {
        val defaultStats = mapOf(
            "course" to defaultContents.count { it.type == "course" },
            "novel" to defaultContents.count { it.type == "novel" },
            "manual" to defaultContents.count { it.type == "manual" },
            "report" to defaultContents.count { it.type == "report" }
        )
        
        return if (context != null) {
            val userStats = UserContentManager.getUserContentCount(context)
            mapOf(
                "course" to (defaultStats["course"] ?: 0) + (userStats["course"] ?: 0),
                "novel" to (defaultStats["novel"] ?: 0) + (userStats["novel"] ?: 0),
                "manual" to (defaultStats["manual"] ?: 0) + (userStats["manual"] ?: 0),
                "report" to (defaultStats["report"] ?: 0) + (userStats["report"] ?: 0)
            )
        } else {
            defaultStats
        }
    }
}